928. Сумма наибольшего и наименьшего
Задан массив
целых чисел. Определите сумму наименьшего и наибольшего элементов массива.
Вход. В первой строке задано количество элементов массива n (n
≤ 100). Во второй строке заданы n
элементов массива, значение каждого из которых по модулю не превышает 100.
Выход. Выведите сумму
наименьшего и наибольшего элементов массива.
Пример
входа |
Пример
выхода |
4 1 2 3 4 |
5 |
обработка
массивов
Задачу можно решить:
·
при помощи цикла, вычисляя минимальный и максимальный
элементы;
·
при помощи массива;
Реализация
алгоритма
Читаем количество чисел n в массиве.
scanf("%d",&n);
В переменных min и max подсчитываем наименьшее и наибольшее число. Инициализируем
переменные.
min = 100; max = -100;
for(i
= 0; i < n; i++)
{
scanf("%d",&a);
if (a < min) min = a;
if (a > max) max = a;
}
Выводим сумму
наименьшего и наибольшего элементов.
printf("%d\n",min
+ max);
Реализация – массив
Объявим массив m для хранения входной последовательности чисел.
int m[100];
Читаем входные
данные.
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &m[i]);
Вычисляем минимальный min
и
максимальный max элементы в массиве.
mn = 100; mx = -100;
for (i = 0; i < n; i++)
{
if (m[i] < mn)
mn = m[i];
if (m[i] > mx)
mx = m[i];
}
Выводим ответ.
printf("%d\n", mn + mx);
Реализация – динамический массив
#include <stdio.h>
int i, n, min,
max;
int *m;
int main(void)
{
scanf("%d",&n);
m = new int[n];
for(i = 0; i < n; i++)
scanf("%d",&m[i]);
min = max = m[0];
//min = 100; max = -100;
for(i = 0; i < n; i++)
{
if (m[i] < min) min = m[i];
if (m[i] > max) max = m[i];
}
printf("%d\n",min
+ max);
delete[] m;
return 0;
}
Реализация при помощи библиотеки шаблонов STL
Объявим массив m для хранения входной последовательности чисел.
int m[101];
Читаем входные
данные.
scanf("%d",&n);
for(i = 0; i
< n; i++)
scanf("%d",&m[i]);
Вычисляем сумму
наименьшего и наибольшего элементов.
res = *min_element(m,m+n) + *max_element(m,m+n);
Выводим ответ.
printf("%d\n",res);
Реализация при помощи функции, которой в качестве
параметра передается массив
#include <stdio.h>
int i, n, res,
*m;
int GetMin(int *mas, int n)
{
int i, min = 10000000;
for(i = 0; i < n; i++)
if (mas[i] < min) min = mas[i];
return min;
}
int GetMax(int *mas, int n)
{
int i, max = -10000000;
for(i = 0; i < n; i++)
if (mas[i] > max) max = mas[i];
return max;
}
int main(void)
{
scanf("%d",&n);
m = new int[n];
for(i = 0; i < n; i++)
scanf("%d",&m[i]);
res = GetMin(m,n)
+ GetMax(m,n);
printf("%d\n",res);
delete[] m;
return 0;
}
Реализация на классах
#include <stdio.h>
int i, n, res,
*m;
class Array
{
public:
int *m;
int len;
Array(int n = 1)
{
len = n;
m = new int[n];
}
int& operator[](int i)
{
return m[i];
}
int GetMax()
{
int i, max = -100000;
for(i = 0; i < len; i++)
if (m[i] > max) max = m[i];
return max;
}
int GetMin()
{
int i, min = 100000;
for(i = 0; i < len; i++)
if (m[i] < min) min = m[i];
return min;
}
};
int main(void)
{
scanf("%d",&n);
Array m(n);
for(i = 0; i < n; i++)
scanf("%d",&m[i]);
res = m.GetMin() +
m.GetMax();
printf("%d\n",res);
return 0;
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int min = con.nextInt(),
max = min;
for(int i = 1;
i < n; i++)
{
int val = con.nextInt();
if (val < min) min = val;
if (val > max) max = val;
}
System.out.println(min + max);
con.close();
}
}
Java реализация с
инициализацией границ
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int min = Integer.MAX_VALUE, max =
Integer.MIN_VALUE;
for(int i = 1;
i <= n; i++)
{
int val = con.nextInt();
if (val < min) min = val;
if (val > max) max = val;
}
System.out.println(min + max);
con.close();
}
}
Java реализация - ArrayList
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
ArrayList<Integer> m = new ArrayList<Integer>();
for(int i = 0;
i < n; i++)
m.add(con.nextInt());
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(int i = 0;
i < n; i++)
{
if (m.get(i) < min) min = m.get(i);
if (m.get(i) > max) max = m.get(i);
}
System.out.println(min + max);
con.close();
}
}
Java реализация -
классы
import java.util.*;
class Array
{
int n;
int m[];
Array(int n)
{
this.n = n;
m = new int[n];
}
void Set(int i, int val)
{
m[i] = val;
}
int GetMax()
{
int max = Integer.MIN_VALUE;
for(int i = 0;
i < n; i++)
if (m[i] > max) max = m[i];
return max;
}
int GetMin()
{
int min = Integer.MAX_VALUE;
for(int i = 0;
i < n; i++)
if (m[i] < min) min = m[i];
return min;
}
}
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
Array a = new Array(n);
for(int i = 0;
i < n; i++)
{
int val = con.nextInt();
a.Set(i,val);
}
System.out.println(a.GetMin() + a.GetMax());
con.close();
}
}
Python реализация
n = int(input())
m = list(map(int,input().split()))
В переменных min и max подсчитываем наименьшее и наибольшее
число. Инициализируем переменные.
min =
max = m[0]
Находим минимальный
min и максимальный max
элементы в списке m.
for v in m:
if v < min: min = v
if v > max: max = v
Вычисляем и выводим сумму наименьшего и наибольшего элемента.
res =
min + max
print (res)
Python реализация через
min и max
n = int(input())
m = list(map(int,input().split()))
Выводим сумму наименьшего и наибольшего элементов.
print (min(m) + max(m))